[qemu patches] Update patches for changeset 11561:c742b2ae920c.
authorChristian Limpach <Christian.Limpach@xensource.com>
Thu, 21 Sep 2006 18:28:35 +0000 (19:28 +0100)
committerChristian Limpach <Christian.Limpach@xensource.com>
Thu, 21 Sep 2006 18:28:35 +0000 (19:28 +0100)
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>
tools/ioemu/patches/fix-vga-scanning-code-overflow [new file with mode: 0644]
tools/ioemu/patches/series
tools/ioemu/patches/vnc-access-monitor-vt
tools/ioemu/patches/vnc-cleanup
tools/ioemu/patches/vnc-display-find-unused
tools/ioemu/patches/vnc-fixes
tools/ioemu/patches/vnc-start-vncviewer
tools/ioemu/patches/vnc-title-domain-name

diff --git a/tools/ioemu/patches/fix-vga-scanning-code-overflow b/tools/ioemu/patches/fix-vga-scanning-code-overflow
new file mode 100644 (file)
index 0000000..6d934fe
--- /dev/null
@@ -0,0 +1,45 @@
+Index: ioemu/hw/vga.c
+===================================================================
+--- ioemu.orig/hw/vga.c        2006-09-21 19:07:52.000000000 +0100
++++ ioemu/hw/vga.c     2006-09-21 19:08:09.000000000 +0100
+@@ -1463,14 +1463,15 @@
+  */
+ static void vga_draw_graphic(VGAState *s, int full_update)
+ {
+-    int y1, y, update, page_min, page_max, linesize, y_start, double_scan, mask;
++    int y1, y, update, linesize, y_start, double_scan, mask;
+     int width, height, shift_control, line_offset, bwidth;
+     ram_addr_t page0, page1;
+     int disp_width, multi_scan, multi_run;
+     uint8_t *d;
+     uint32_t v, addr1, addr;
+     vga_draw_line_func *vga_draw_line;
+-    
++    ram_addr_t page_min, page_max;
++
+     full_update |= update_basic_params(s);
+     s->get_resolution(s, &width, &height);
+@@ -1561,8 +1562,8 @@
+     addr1 = (s->start_addr * 4);
+     bwidth = width * 4;
+     y_start = -1;
+-    page_min = 0x7fffffff;
+-    page_max = -1;
++    page_min = 0;
++    page_max = 0;
+     d = s->ds->data;
+     linesize = s->ds->linesize;
+     y1 = 0;
+@@ -1592,9 +1593,9 @@
+         if (update) {
+             if (y_start < 0)
+                 y_start = y;
+-            if (page0 < page_min)
++            if (page_min == 0 || page0 < page_min)
+                 page_min = page0;
+-            if (page1 > page_max)
++            if (page_max == 0 || page1 > page_max)
+                 page_max = page1;
+             vga_draw_line(s, d, s->vram_ptr + addr, width);
+             if (s->cursor_draw_line)
index 08d7a6f6a423d45e0a12942e982b79cf87f8535c..9c61f957c66419a5e3e19e5c5724f027b3b9bdbe 100644 (file)
@@ -29,6 +29,7 @@ domain-timeoffset
 acpi-support
 acpi-timer-support
 acpi-poweroff-support
+fix-vga-scanning-code-overflow
 vnc-cleanup
 vnc-fixes
 vnc-start-vncviewer
index ab30187259a05925d3a25dda854d06d0f640fc7d..3960cab25a2da7bc502da59295bbf5e585b2d729 100644 (file)
@@ -1,7 +1,7 @@
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:50:14.623519661 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:15.956372339 +0100
+--- ioemu.orig/vnc.c   2006-09-21 19:10:57.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:11:00.000000000 +0100
 @@ -32,6 +32,10 @@
  #include "vnc_keysym.h"
  #include "keymaps.c"
@@ -22,7 +22,7 @@ Index: ioemu/vnc.c
  };
  
  #define DIRTY_PIXEL_BITS 64
-@@ -794,16 +800,80 @@
+@@ -790,16 +796,80 @@
  
  static void do_key_event(VncState *vs, int down, uint32_t sym)
  {
index bc7ba27ca97cf7ccc7c65bca49f32fe9cf09db2d..c09b9c68963d0fc2b8a724a0466c1313c37cc2ec 100644 (file)
@@ -1,7 +1,7 @@
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:37:36.091553839 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:10.313996001 +0100
+--- ioemu.orig/vnc.c   2006-09-21 18:54:22.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:05:39.000000000 +0100
 @@ -143,13 +143,16 @@
  static void vnc_dpy_update(DisplayState *ds, int x, int y, int w, int h)
  {
@@ -30,7 +30,16 @@ Index: ioemu/vnc.c
  
      if (vs->need_update && vs->csock != -1) {
        int y;
-@@ -390,7 +394,7 @@
+@@ -383,6 +387,8 @@
+       int saved_offset;
+       int has_dirty = 0;
++      qemu_mod_timer(vs->timer, now + VNC_REFRESH_INTERVAL);
++
+         vnc_set_bits(width_mask, (vs->width / 16), VNC_DIRTY_WORDS);
+       /* Walk through the dirty map and eliminate tiles that
+@@ -390,7 +396,7 @@
        row = vs->ds->data;
        old_row = vs->old_data;
  
@@ -39,34 +48,50 @@ Index: ioemu/vnc.c
            if (vnc_and_bits(vs->dirty_row[y], width_mask, VNC_DIRTY_WORDS)) {
                int x;
                char *ptr, *old_ptr;
-@@ -415,10 +419,8 @@
+@@ -415,10 +421,8 @@
            old_row += vs->ds->linesize;
        }
  
 -      if (!has_dirty) {
 -          qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock) + VNC_REFRESH_INTERVAL);
--          return;
--      }
 +      if (!has_dirty)
-+          goto out;
+           return;
+-      }
  
        /* Count rectangles */
        n_rectangles = 0;
-@@ -456,7 +458,9 @@
+@@ -454,17 +458,13 @@
+       vs->output.buffer[saved_offset] = (n_rectangles >> 8) & 0xFF;
+       vs->output.buffer[saved_offset + 1] = n_rectangles & 0xFF;
        vnc_flush(vs);
+-
      }
 -    qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock) + VNC_REFRESH_INTERVAL);
-+
-+ out:
-+    qemu_mod_timer(vs->timer, now + VNC_REFRESH_INTERVAL);
  }
  
  static void vnc_timer_init(VncState *vs)
+ {
+-    if (vs->timer == NULL) {
++    if (vs->timer == NULL)
+       vs->timer = qemu_new_timer(rt_clock, vnc_update_client, vs);
+-      qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock));
+-    }
+ }
+ static void vnc_dpy_refresh(DisplayState *ds)
+@@ -736,6 +736,8 @@
+           old_row += vs->ds->linesize;
+       }
+     }
++
++    qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock));
+ }
+ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-17 19:50:02.410869542 +0100
-+++ ioemu/vl.c 2006-08-17 19:50:10.316995669 +0100
+--- ioemu.orig/vl.c    2006-09-21 18:55:38.000000000 +0100
++++ ioemu/vl.c 2006-09-21 19:00:48.000000000 +0100
 @@ -5120,10 +5120,10 @@
          /* XXX: better handling of removal */
          for(ioh = first_io_handler; ioh != NULL; ioh = ioh_next) {
index c763272c096d0f36ec388aee037ea052c40e75dc..0a33288b0a685a59397fdf082fb7ef37f3d8f95d 100644 (file)
@@ -1,8 +1,8 @@
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:50:15.956372339 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:17.083247783 +0100
-@@ -1183,7 +1183,7 @@
+--- ioemu.orig/vnc.c   2006-09-21 19:11:00.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:11:03.000000000 +0100
+@@ -1181,7 +1181,7 @@
      }
  }
  
@@ -11,7 +11,7 @@ Index: ioemu/vnc.c
  {
      struct sockaddr_in addr;
      int reuse_addr, ret;
-@@ -1214,10 +1214,6 @@
+@@ -1212,10 +1212,6 @@
        exit(1);
      }
  
@@ -22,7 +22,7 @@ Index: ioemu/vnc.c
      reuse_addr = 1;
      ret = setsockopt(vs->lsock, SOL_SOCKET, SO_REUSEADDR,
                     (const char *)&reuse_addr, sizeof(reuse_addr));
-@@ -1226,7 +1222,16 @@
+@@ -1224,7 +1220,16 @@
        exit(1);
      }
  
@@ -39,7 +39,7 @@ Index: ioemu/vnc.c
        fprintf(stderr, "bind() failed\n");
        exit(1);
      }
-@@ -1247,6 +1252,8 @@
+@@ -1245,6 +1250,8 @@
      vs->ds->dpy_refresh = vnc_dpy_refresh;
  
      vnc_dpy_resize(vs->ds, 640, 400);
@@ -50,8 +50,8 @@ Index: ioemu/vnc.c
  int vnc_start_viewer(int port)
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-17 19:50:13.152682236 +0100
-+++ ioemu/vl.c 2006-08-17 19:50:17.086247452 +0100
+--- ioemu.orig/vl.c    2006-09-21 19:10:53.000000000 +0100
++++ ioemu/vl.c 2006-09-21 19:11:03.000000000 +0100
 @@ -121,6 +121,7 @@
  static DisplayState display_state;
  int nographic;
@@ -115,8 +115,8 @@ Index: ioemu/vl.c
      } else {
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-17 19:50:13.153682125 +0100
-+++ ioemu/vl.h 2006-08-17 19:50:17.087247341 +0100
+--- ioemu.orig/vl.h    2006-09-21 19:10:53.000000000 +0100
++++ ioemu/vl.h 2006-09-21 19:11:03.000000000 +0100
 @@ -785,7 +785,7 @@
  void cocoa_display_init(DisplayState *ds, int full_screen);
  
index 339c4a273d35ad6347b98ce4b7d5905ec56869df..debf39342ca0bec21c939f740d43f166da9bde70 100644 (file)
@@ -1,7 +1,7 @@
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-17 19:50:10.316995669 +0100
-+++ ioemu/vl.c 2006-08-17 19:50:12.100798502 +0100
+--- ioemu.orig/vl.c    2006-09-21 19:08:18.000000000 +0100
++++ ioemu/vl.c 2006-09-21 19:26:24.000000000 +0100
 @@ -6534,8 +6534,10 @@
          }
      }
@@ -17,8 +17,8 @@ Index: ioemu/vl.c
      if (use_gdbstub) {
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:50:10.313996001 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:12.101798392 +0100
+--- ioemu.orig/vnc.c   2006-09-21 19:08:18.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:26:38.000000000 +0100
 @@ -3,6 +3,7 @@
   * 
   * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws>
@@ -240,7 +240,7 @@ Index: ioemu/vnc.c
  {
      VncState *vs = opaque;
      int64_t now = qemu_get_clock(rt_clock);
-@@ -382,12 +445,16 @@
+@@ -382,14 +445,18 @@
        int y;
        char *row;
        char *old_row;
@@ -252,6 +252,8 @@ Index: ioemu/vnc.c
 +      int maxx, maxy;
 +      int tile_bytes = vs->depth * DP2X(vs, 1);
  
+       qemu_mod_timer(vs->timer, now + VNC_REFRESH_INTERVAL);
 -        vnc_set_bits(width_mask, (vs->width / 16), VNC_DIRTY_WORDS);
 +      if (vs->width != DP2X(vs, DIRTY_PIXEL_BITS))
 +          width_mask = (1ULL << X2DP_UP(vs, vs->ds->width)) - 1;
@@ -260,7 +262,7 @@ Index: ioemu/vnc.c
  
        /* Walk through the dirty map and eliminate tiles that
           really aren't dirty */
-@@ -395,23 +462,25 @@
+@@ -397,23 +464,25 @@
        old_row = vs->old_data;
  
        for (y = 0; y < vs->ds->height; y++) {
@@ -295,17 +297,17 @@ Index: ioemu/vnc.c
                }
            }
  
-@@ -419,7 +488,8 @@
+@@ -421,7 +490,8 @@
            old_row += vs->ds->linesize;
        }
  
 -      if (!has_dirty)
 +      if (!vs->has_update || vs->visible_y >= vs->ds->height ||
 +          vs->visible_x >= vs->ds->width)
-           goto out;
+           return;
  
        /* Count rectangles */
-@@ -429,40 +499,61 @@
+@@ -431,34 +501,56 @@
        saved_offset = vs->output.offset;
        vnc_write_u16(vs, 0);
  
@@ -354,32 +356,26 @@ Index: ioemu/vnc.c
        }
        vs->output.buffer[saved_offset] = (n_rectangles >> 8) & 0xFF;
        vs->output.buffer[saved_offset + 1] = n_rectangles & 0xFF;
--      vnc_flush(vs);
--    }
++
 +      vs->has_update = 0;
 +      vs->need_update = 0;
-+      vnc_flush(vs);
+       vnc_flush(vs);
+-    }
 +      vs->slow_client = 0;
 +    } else
 +      vs->slow_client = 1;
-  out:
-     qemu_mod_timer(vs->timer, now + VNC_REFRESH_INTERVAL);
- }
++}
++
 +static void vnc_update_client(void *opaque)
 +{
 +    VncState *vs = opaque;
 +
 +    vs->ds->dpy_refresh(vs->ds);
 +    _vnc_update_client(vs);
-+}
-+
+ }
  static void vnc_timer_init(VncState *vs)
- {
-     if (vs->timer == NULL) {
-@@ -473,8 +564,6 @@
+@@ -469,8 +561,6 @@
  
  static void vnc_dpy_refresh(DisplayState *ds)
  {
@@ -388,7 +384,7 @@ Index: ioemu/vnc.c
      vga_hw_update();
  }
  
-@@ -510,7 +599,7 @@
+@@ -506,7 +596,7 @@
  
  static void buffer_reset(Buffer *buffer)
  {
@@ -397,7 +393,7 @@ Index: ioemu/vnc.c
  }
  
  static void buffer_append(Buffer *buffer, const void *data, size_t len)
-@@ -551,12 +640,12 @@
+@@ -547,12 +637,12 @@
      if (!ret)
        return;
  
@@ -413,7 +409,7 @@ Index: ioemu/vnc.c
  }
  
  static void vnc_read_when(VncState *vs, VncReadEvent *func, size_t expecting)
-@@ -588,11 +677,11 @@
+@@ -584,11 +674,11 @@
            return;
  
        if (!ret) {
@@ -428,7 +424,7 @@ Index: ioemu/vnc.c
      }
  }
  
-@@ -600,9 +689,9 @@
+@@ -596,9 +686,9 @@
  {
      buffer_reserve(&vs->output, len);
  
@@ -441,7 +437,7 @@ Index: ioemu/vnc.c
  
      buffer_append(&vs->output, data, len);
  }
-@@ -724,22 +813,25 @@
+@@ -720,22 +810,25 @@
      do_key_event(vs, down, sym);
  }
  
@@ -475,10 +471,10 @@ Index: ioemu/vnc.c
 +    vs->visible_y = y_position;
 +    vs->visible_w = w;
 +    vs->visible_h = h;
- }
  
- static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
-@@ -845,8 +937,6 @@
+     qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock));
+ }
+@@ -843,8 +936,6 @@
      }
  
      vnc_dpy_resize(vs->ds, vs->ds->width, vs->ds->height);
@@ -487,7 +483,7 @@ Index: ioemu/vnc.c
  
      vga_hw_invalidate();
      vga_hw_update();
-@@ -1012,11 +1102,11 @@
+@@ -1010,11 +1101,11 @@
        vnc_write(vs, "RFB 003.003\n", 12);
        vnc_flush(vs);
        vnc_read_when(vs, protocol_version, 12);
@@ -501,7 +497,7 @@ Index: ioemu/vnc.c
      }
  }
  
-@@ -1073,17 +1163,15 @@
+@@ -1071,17 +1162,15 @@
        exit(1);
      }
  
@@ -524,8 +520,8 @@ Index: ioemu/vnc.c
  }
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-17 19:50:02.411869432 +0100
-+++ ioemu/vl.h 2006-08-17 19:50:12.102798281 +0100
+--- ioemu.orig/vl.h    2006-09-21 19:00:48.000000000 +0100
++++ ioemu/vl.h 2006-09-21 19:26:24.000000000 +0100
 @@ -319,6 +319,7 @@
  int is_graphic_console(void);
  CharDriverState *text_console_init(DisplayState *ds);
index 662f482620b4363bf8aee8f08aeb132722cc61ff..347b997459645e1aaff337df36ef9d44de939d1d 100644 (file)
@@ -1,8 +1,8 @@
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:50:12.101798392 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:13.149682567 +0100
-@@ -1175,3 +1175,25 @@
+--- ioemu.orig/vnc.c   2006-09-21 19:10:45.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:10:53.000000000 +0100
+@@ -1173,3 +1173,25 @@
  
      vnc_dpy_resize(vs->ds, 640, 400);
  }
@@ -30,8 +30,8 @@ Index: ioemu/vnc.c
 +}
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-17 19:50:12.100798502 +0100
-+++ ioemu/vl.c 2006-08-17 19:50:13.152682236 +0100
+--- ioemu.orig/vl.c    2006-09-21 19:08:38.000000000 +0100
++++ ioemu/vl.c 2006-09-21 19:10:53.000000000 +0100
 @@ -120,6 +120,7 @@
  int bios_size;
  static DisplayState display_state;
@@ -93,8 +93,8 @@ Index: ioemu/vl.c
          sdl_display_init(ds, full_screen);
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-17 19:50:12.102798281 +0100
-+++ ioemu/vl.h 2006-08-17 19:50:13.153682125 +0100
+--- ioemu.orig/vl.h    2006-09-21 19:08:38.000000000 +0100
++++ ioemu/vl.h 2006-09-21 19:10:53.000000000 +0100
 @@ -786,6 +786,7 @@
  
  /* vnc.c */
index b02e8eba5adb618e08cdb9aff2ef7c5c14a7b616..951d60d05d3ecf9f4c9ea8112dee6337a952cf1e 100644 (file)
@@ -1,8 +1,8 @@
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-17 19:50:13.149682567 +0100
-+++ ioemu/vnc.c        2006-08-17 19:50:14.623519661 +0100
-@@ -1014,6 +1014,7 @@
+--- ioemu.orig/vnc.c   2006-09-21 19:10:53.000000000 +0100
++++ ioemu/vnc.c        2006-09-21 19:10:57.000000000 +0100
+@@ -1012,6 +1012,7 @@
  
  static int protocol_client_init(VncState *vs, char *data, size_t len)
  {
@@ -10,7 +10,7 @@ Index: ioemu/vnc.c
      char pad[3] = { 0, 0, 0 };
  
      vs->width = vs->ds->width;
-@@ -1059,8 +1060,10 @@
+@@ -1057,8 +1058,10 @@
        
      vnc_write(vs, pad, 3);           /* padding */